关联 ‹association›

Exisi 2021-03-27 07:30:10
Categories: Tags:
  • <association> 可以用于将查询结果集中的一组列映射到另一个Java对象的属性上,处理“一对一”类型的关系。

 

  • 比如,以下示例中一个博客有一个用户。 关联映射就工作于这种结果之上。

示例

<resultMap id="userMap" type="User">
        <id property="id" column="id"></id>
        <result property="username" column="username"></result>
        <result property="password" column="password"></result>
        <result property="address" column="address"></result>
        <result property="email" column="email"></result>
        
        <association property=
"role" javaType="Role">
                <id property=
"id" column="role_id"></id>
                <result property=
"name" column="role_name"></result>
        </association>

 

</resultMap>

 

属性

描述

column

来自数据库的列名,或重命名的列标签。这和通常传递给 resultSet.getString(columnName)方法的字符串是相同的。

column 注 意 : 要 处 理 复 合 主 键 , 你 可 以 指 定 多 个 列 名 通 过 column= {prop1=col1,prop2=col2} ” 这种语法来传递给嵌套查询语 句。

这会引起 prop1 prop2 以参数对象形式来设置给目标嵌套查询语句。

property

映射到实体类结果的字段或属性。如果用来匹配的 JavaBeans 存在给定名字的属性,那么它将会被使用。

否则 MyBatis 将会寻找与给定名称相同的字段。 这两种情形你可以使用通常点式的复杂属性导航。

比如,你可以这样映射 一 些 东 西 : username , 或 者 映 射 到 一 些 复 杂 的 东 西 : address.street.number” 。

javaType

指向一个 Java 实体类的字段或属性,或一个类型别名,

属性可以是(int,StringRole)

如果你映射到一个 JavaBean,MyBatis 通常可以断定类型。

然而, javaType 果你映射到的是 HashMap,那么你应该明确地指定 javaType 来保证所需的行为。

select

另外一个映射语句的 ID,可以加载这个属性映射需要的复杂类型。获取的 在列属性中指定的列的值将被传递给目标 select 语句作为参数。

select 注 意 : 要 处 理 复 合 主 键 , 你 可 以 指 定 多 个 列 名 通 过 column= {prop1=col1,prop2=col2} ” 这种语法来传递给嵌套查询语 句。

这会引起 prop1 prop2 以参数对象形式来设置给目标嵌套查询语句。

fetchType

可选的。有效值为 lazyeager。 如果使用了,它将取代全局配置参数lazyLoadingEnabled

foreignColumn

指定外键对应的列名,指定的列将与父类型中 column 的给出的列进行匹配。

resultSet

指定用于加载复杂类型的结果集名字。

jdbcType

在这个表格之前的所支持的 JDBC 类型列表中的类型。JDBC 类型是仅仅 需要对插入, 更新和删除操作可能为空的列进行处理。

这是 JDBC 的需要, jdbcType 而不是 MyBatis 的。如果你直接使用 JDBC 编程,你需要指定这个类型-但 仅仅对可能为空的值。

typeHandler

使用这个属性,你可以覆盖默认的 typeHandler 类型处理器。

这个属性值是类的完全限定名或者是一个类型处理器的实现, 或者是类型别名。

resultMap

用于嵌套外部resultMap结果集

notNullColumn

用于指定关联对象的某个属性不为null时,才会将查询结果映射到Java对象上

autoMapping

autoMapping 属性用于指示 Mybatis 是否自动映射关联对象中的属性。

具体来说,如果 autoMapping 属性值为 trueMybatis 将自动映射关联对象中的属性,否则需要手动设置 SQL 语句来进行映射